package acwing_01;
import java.io.*;
import java.util.*;
import java.util.Map.Entry;
public class _802_离散化_区间和 {
	// 离散化主要思想：
	// 把大而分散的一段段稀疏区间，整合映射到一段连续的较小的稠密区间里，
	// 然后就可以通过普通前缀和公式来计算连续一段的区间和，
	// 本质上就是化大为小，把稀疏离散化简为稠密连续的一段。
	// 虽然题目中数据的范围是 -1e9 —— 1e9，但是实际只会有 1e5个数，
	// 所以实际 -1e9 —— 1e9 中会有很多元素值为0，所以该数据的实际填充值是非常稀疏的
	static class Pair {
		int l;
		int r;
	}
	static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
	static int n,m;
	static int x,c;
	static int l,r;
	static StringTokenizer st;
	// 使用TreeMap存储，默认会按照key值排序
	static Map<Integer,Integer> map = new TreeMap<>();
	static Map<Integer,Integer> sum = new TreeMap<>();
	static Queue<Pair> query = new LinkedList<Pair>();
	public static void main(String[] args) throws IOException{
		
		st = new StringTokenizer(br.readLine());
		n = Integer.parseInt(st.nextToken());
		m = Integer.parseInt(st.nextToken());
		
		// 读入操作
		for(int i = 0; i < n; i++) {
			st = new StringTokenizer(br.readLine());
			x = Integer.parseInt(st.nextToken());
			c = Integer.parseInt(st.nextToken());
			// x存入map，对x进行+c操作
			if(map.get(x) == null) {
				map.put(x, c);
			} else {
				map.put(x, map.get(x) + c);
			}
		}		
		
		// 读入查询
		for(int i = 0; i < m; i++) {
			st = new StringTokenizer(br.readLine());
			l = Integer.parseInt(st.nextToken());
			r = Integer.parseInt(st.nextToken());
			// 将查询先存入队列中
			Pair pair = new Pair();
			pair.l = l;
			pair.r = r;
			query.add(pair);
			// 判断map是否有l-1 r如果没有则需要给0，这样后面才能方便前缀和计算以及区间和计算
			// 如果不存入l-1 r，那么进行区间和计算 res = sum.get(r) - sum.get(l-1) 时就无法拿到该位置的值
			if(map.get(l - 1) == null) {
				map.put(l - 1, 0);
			}
			if(map.get(r) == null) {
				map.put(r, 0);
			}
			
		}
		
		// 遍历map进行前缀和
		int tempSum = 0;
		for (Entry<Integer, Integer> entry: map.entrySet()) {
			tempSum += entry.getValue();
			sum.put(entry.getKey(), tempSum);
		}
		
		while(query.size() != 0) {
			Pair pair = query.poll();
			int res = sum.get(pair.r) - sum.get(pair.l - 1);
			bw.write(res + "");
			bw.newLine();
		}

		
		bw.flush();
		bw.close();
		br.close();
		
	}
}
